package lormi.meipin.common;

import com.cloopen.rest.sdk.CCPRestSmsSDK;
import lormi.meipin.exception.LMException;

import java.util.HashMap;

/*
 * 短信api调用 
 * 云通讯api
 * 
 * */
public class LMYunTongXunAPI {
	
	/*
	 * 发送短信
	 * */

	public static boolean sendPhone(String phone,String code) throws LMException{
		boolean re = false;
		HashMap<String, Object> result;
		//初始化SDK
		CCPRestSmsSDK restAPI = new CCPRestSmsSDK();
		//*沙盒环境（用于应用开发调试）：restAPI.init("sandboxapp.cloopen.com", "8883");
		//*生产环境（用户应用上线使用）：restAPI.init("app.cloopen.com", "8883");
		restAPI.init("app.cloopen.com", "8883");
		
		//*参数顺序：第一个参数是ACOUNT SID，第二个参数是AUTH TOKEN。
		restAPI.setAccount("aaf98f89490d8cf5014916d070890503", "cb1ebdf2ea1e46349f590e56745df9a1");
		
		//*测试开发可使用“测试Demo”的APP ID，正式上线需要使用自己创建的应用的App ID 
		restAPI.setAppId("aaf98f89490d8cf5014916d6d0550514");
		
		//*第一个参数:是要发送的手机号码，可以用逗号分隔，一次最多支持100个手机号                          
		//*第二个参数:是模板ID，在平台上创建的短信模板的ID值；测试的时候可以使用系统的默认模板，id为1。    
		//*假设您用测试Demo的APP ID，则需使用默认模板ID 1，发送手机号是13800000000，传入参数为6532和5，则调用方式为           
		//*result = restAPI.sendTemplateSMS("13800000000","1" ,new String[]{"6532","5"});	
		//*则13800000000手机号收到的短信内容是：【云通讯】您使用的是云通讯短信模板，您的验证码是6532，请于5分钟内正确输入     
		result = restAPI.sendTemplateSMS(phone,"75817" ,new String[]{code,"5"});
		
		if("000000".equals(result.get("statusCode"))){
			//正常返回输出data包体信息（map）
			re = true;
//			HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
//			Set<String> keySet = data.keySet();
//			for(String key:keySet){
//				Object object = data.get(key);
//				System.out.println(key +" = "+object);
//			}
		}else{
			//异常返回输出错误码和错误信息
			System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
			if("160040".equals(result.get("statusCode"))){
				throw new LMException(120015);
			}
		}
		return re;
	}
	
	/*
	 * 获取随机6位验证码
	 * */
	public static String getPhoneCode(){
		String str = "";
		str += (int)(Math.random()*9+1);
		for(int i = 0; i < 5; i++){
			str += (int)(Math.random()*10);
		}
		return str;
	}
	
}
